Skip to content

Add General / Permissions / About panes to redesigned Settings#357

Closed
FuJacob wants to merge 3 commits into
feat/settings-redesign-scaffoldfrom
feat/settings-redesign-general-perms-about
Closed

Add General / Permissions / About panes to redesigned Settings#357
FuJacob wants to merge 3 commits into
feat/settings-redesign-scaffoldfrom
feat/settings-redesign-general-perms-about

Conversation

@FuJacob
Copy link
Copy Markdown
Owner

@FuJacob FuJacob commented May 28, 2026

Summary

Second PR in the Settings sidebar-redesign stack. Replaces three of the placeholder panes with real implementations: General, Permissions, About. About also introduces an Acknowledgements sheet listing the third-party packages Cotabby ships with (llama.cpp, Sparkle, swift-log, CotabbyInference).

The legacy SettingsView is untouched; the feature flag from PR 1 still defaults to off, so end users see no change. With the flag flipped, these three panes are now functional.

Stacked on feat/settings-redesign-scaffold.

Validation

xcodegen generate + xcodebuild -project Cotabby.xcodeproj -scheme Cotabby -destination 'platform=macOS' build CODE_SIGNING_ALLOWED=NO
** BUILD SUCCEEDED **

swiftlint lint --quiet → no violations.

Manual: with the redesign flag on, walk through each pane. General should exercise every toggle plus the ghost-color swatches and opacity slider; Permissions should reflect grant state and offer the Open Settings shortcuts; About should show the version, Check for Updates, the Support link, the GitHub / Wiki / Acknowledgements links, and the uninstall text.

Linked issues

(none filed)

Risk / rollout notes

  • Behavior of every individual control is intentionally identical to the legacy SettingsView sections; bindings and tooltip copy were lifted verbatim. Visual change is the scaffolding around them (per-pane Form, optional callout slot) rather than the controls themselves.
  • Permissions pane shows a top-of-pane callout when any required permission is missing. This is a small preview of the per-pane attention pattern that PR 5 generalizes for the rest of the panes.
  • About pane consolidates what used to live across three legacy sections (header, support CTA, uninstall) and adds Acknowledgements. No persisted setting or model property is changed; this is purely visual reorganization.

Greptile Summary

Adds three fully-implemented Settings panes (General, Permissions, About) to the redesigned sidebar-based Settings window, replacing their placeholder counterparts. The feature-flag-off default means end users see no change; behavior for each control is intentionally identical to the legacy SettingsView sections.

  • GeneralPaneView re-homes all toggle, picker, ghost-color swatch, and opacity slider controls with manual Binding wrappers that delegate to SuggestionSettingsModel's existing setter API.
  • PermissionsPaneView renders live permission status rows and addresses the stale-status-on-return bug from the previous review by combining .onAppear with .onChange(of: scenePhase).
  • AboutPaneView consolidates the header, support CTA, and uninstall text; a new AcknowledgementsView sheet lists the four third-party packages shipped with the app.

Confidence Score: 5/5

Safe to merge — all changes are behind the existing feature flag, no persisted settings or model properties are altered, and the two issues flagged in the previous review have both been addressed.

The three pane implementations are purely additive UI, the bindings delegate to the same setter API already exercised by the legacy view, and the URL construction is now consistently guarded with if let throughout. No behavioral regression is possible while the feature flag remains off.

No files require special attention.

Important Files Changed

Filename Overview
Cotabby/UI/Settings/Panes/GeneralPaneView.swift All toggles, pickers, swatches, and the opacity slider wired correctly via delegating Binding wrappers; colorScheme used for accurate automatic-swatch preview. No issues.
Cotabby/UI/Settings/Panes/PermissionsPaneView.swift scenePhase refresh fix from previous review is implemented; callout is computed and correctly re-evaluated on ObservedObject changes. No issues.
Cotabby/UI/Settings/Panes/AboutPaneView.swift All URL(string:) usages correctly guarded with if let (force-unwrap issues from previous review resolved). appVersionText handles all four Bundle key combinations cleanly. No issues.
Cotabby/UI/Settings/Panes/AcknowledgementsView.swift Fixed-size modal sheet with four static entries; URL links also guarded with if let. No issues.
Cotabby/UI/Settings/SettingsContainerView.swift detailPane switch updated to route .general, .permissions, and .about to their new views; remaining cases fall through to PlaceholderPaneView as expected. No issues.
Cotabby.xcodeproj/project.pbxproj Four new Swift source files correctly registered with matching PBXBuildFile, PBXFileReference, and PBXGroup entries. No issues.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    SCV["SettingsContainerView\n(NavigationSplitView)"]
    SCV -->|".general"| GPV["GeneralPaneView\n(SuggestionSettingsModel)"]
    SCV -->|".permissions"| PPV["PermissionsPaneView\n(PermissionManager)"]
    SCV -->|".about"| APV["AboutPaneView\n(AppUpdateManager)"]
    SCV -->|"other cases"| PLV["PlaceholderPaneView"]

    GPV --> SPS1["SettingsPaneScaffold\n(no callout)"]
    PPV --> SPS2["SettingsPaneScaffold\n(callout when perms missing)"]
    APV --> SPS3["SettingsPaneScaffold\n(no callout)"]

    APV -->|"sheet"| AKV["AcknowledgementsView\n(modal sheet)"]

    PPV -->|"onAppear + onChange(scenePhase)"| PM["PermissionManager.refresh()"]
Loading

Reviews (2): Last reviewed commit: "Address Greptile feedback: scene-active ..." | Re-trigger Greptile

Comment thread Cotabby/UI/Settings/Panes/PermissionsPaneView.swift
Comment thread Cotabby/UI/Settings/Panes/AboutPaneView.swift
Comment thread Cotabby/UI/Settings/Panes/AboutPaneView.swift
@FuJacob FuJacob force-pushed the feat/settings-redesign-scaffold branch from 0a7dc0d to fb8c68b Compare May 28, 2026 10:28
@FuJacob FuJacob deleted the branch feat/settings-redesign-scaffold May 28, 2026 10:31
@FuJacob FuJacob closed this May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant